Software Intelligence
   HOME

TheInfoList



OR:

Software Intelligence is insight into the structural condition of
software Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work. At the lowest programming level, executable code consist ...
assets produced by software designed to analyze
database In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases ...
structure,
software framework In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard ...
and
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the ...
to better understand and control complex software systems in
Information Technology Information technology (IT) is the use of computers to create, process, store, retrieve, and exchange all kinds of data . and information. IT forms part of information and communications technology (ICT). An information technology syste ...
environments. Similarly to
Business Intelligence Business intelligence (BI) comprises the strategies and technologies used by enterprises for the data analysis and management of business information. Common functions of business intelligence technologies include reporting, online analytical ...
(BI), Software Intelligence is produced by a set of software tools and techniques for the mining of data and software's inner-structure. End results are automatically produced and feed a knowledge base containing technical documentation and make it available to all to be used by business and software stakeholders to make informed decisions, measure the efficiency of software development organizations, communicate about the software health, prevent software catastrophes. __TOC__


History

Software Intelligence has been used by Kirk Paul Lafler, an American engineer, entrepreneur, and consultant, and founder of Software Intelligence Corporation in 1979. At that time, it was mainly related to SAS activities, in which he has been an expert since 1979. In the early 1980s, Victor R. Basili participated in different papers detailing a methodology for collecting valid software engineering data relating to software engineering, evaluation of software development, and variations. In 2004, different software vendors in software analysis start using the terms as part of their product naming and marketing strategy. Then in 2010, Ahmed E. Hassan and Tao Xie defined Software Intelligence as a "''practice offering software practitioners up-to-date and pertinent information to support their daily decision-making processes and Software Intelligence should support decision-making processes throughout the lifetime of a software system''". They go on by defining Software Intelligence as a "''strong impact on modern software practice''" for the upcoming decades.


Capabilities

Because of the complexity and wide range of components and subjects implied in software, Software intelligence is derived from different aspects of software: * Software composition is the construction of software application components. Components result from software coding, as well as the integration of the source code from external components: Open source, 3rd party components, or frameworks. Other components can be integrated using
application programming interface An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how ...
call to libraries or services. *
Software architecture Software architecture is the fundamental structure of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. ...
refers to the structure and organization of elements of a system, relations, and properties among them. * Software flaws designate problems that can cause security, stability, resiliency, and unexpected results. There is no standard definition of software flaws but the most accepted is from The MITRE Corporation where common flaws are cataloged as
Common Weakness Enumeration The Common Weakness Enumeration (CWE) is a category system for hardware and software weaknesses and vulnerabilities. It is sustained by a community project with the goals of understanding flaws in software and hardware and creating automated tools t ...
. * Software grades assess attributes of the software. Historically, the classification and terminology of attributes have been derived from the ISO 9126-3 and the subsequent ISO 25000:2005 quality model. * Software economics refers to the resource evaluation of software in past, present, or future to make decisions and to govern.


Components

The capabilities of Software intelligence platforms include an increasing number of components: * Code analyzer to serve as an information basis for other Software Intelligence components identifying
objects Object may refer to: General meanings * Object (philosophy), a thing, being, or concept ** Object (abstract), an object which does not exist at any particular time or place ** Physical object, an identifiable collection of matter * Goal, an ai ...
created by the programming language, external objects from
Open source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized so ...
, third parties objects,
frameworks A framework is a generic term commonly referring to an essential supporting structure which other things are built on top of. Framework may refer to: Computing * Application framework, used to implement the structure of an application for an op ...
, API, or services * Graphical visualization and blueprinting of the inner structure of the software product or application considered including dependencies, from data acquisition (automated and real-time data capture, end-user entries) up to data storage, the different layers within the software, and the
coupling A coupling is a device used to connect two shafts together at their ends for the purpose of transmitting power. The primary purpose of couplings is to join two pieces of rotating equipment while permitting some degree of misalignment or end mov ...
between all elements. * Navigation capabilities within components and impact analysis features * List of flaws, architectural and coding violations, against standardized best practices, cloud blocker preventing migration to a Cloud environment, and rogue data-call entailing the security and integrity of software * Grades or scores of the structural and
software quality In the context of software engineering, software quality refers to two related but distinct notions: * Software functional quality reflects how well it complies with or conforms to a given design, based on functional requirements or specificatio ...
aligned with industry-standard like OMG,
CISQ The Consortium for IT Software Quality (CISQ) is an IT industry group comprising IT executives from the Global 2000, systems integrators, outsourced service providers, and software technology vendors committed to making improvements in the quali ...
or SEI assessing the reliability, security, efficiency, maintainability, and scalability to cloud or other systems. * Metrics quantifying and estimating software economics including work effort, sizing, and
technical debt In software development, technical debt (also known as design debt or code debt) is the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer. Analogous with ...
* Industry references and benchmarking allowing comparisons between outputs of analysis and industry standards


User Aspect

Some considerations must be made in order to successfully integrate the usage of Software Intelligence systems in a company. Ultimately the Software Intelligence system must be accepted and utilized by the users in order for it to add value to the organization. If the system does not add value to the users' mission, they simply don't use it as stated by M. Storey in 2003. At the code level and system representation, Software Intelligence systems must provide a different level of abstractions: an abstract view for designing, explaining and documenting and a detailed view for understanding and analyzing the software system. At the governance level, the user acceptance for Software Intelligence covers different areas related to the inner functioning of the system as well as the output of the system. It encompasses these requirements: * Comprehensive: missing information may lead to a wrong or inappropriate decision, as well as it is a factor influencing the user acceptance of a system. * Accurate: accuracy depends on how the data is collected to ensure fair and indisputable opinion and judgment. * Precise: precision is usually judged by comparing several measurements from the same or different sources. * Scalable: lack of scalability in the software industry is a critical factor leading to failure. * Credible: outputs must be trusted and believed. * Deploy-able and usable.


Applications

Software intelligence has many applications in all businesses relating to the software environment, whether it is software for professionals, individuals, or embedded software. Depending on the association and the usage of the components, applications will relate to: * Change and modernization: uniform documentation and blueprinting on all inner components, external code integrated, or call to internal or external components of the software * Resiliency and security: measuring against industry standards to diagnose structural flaws in an IT environment. Compliance validation regarding security, specific regulations or technical matters. * decisions making and governance: Providing analytics about the software itself or stakeholders involved in the development of the software, e.g. productivity measurement to inform business and IT leaders about progress towards business goals. Assessment and Benchmarking to help business and IT leaders to make informed, fact-based decision about software.


Marketplace

The Software Intelligence is a high-level discipline and has been gradually growing covering applications listed above. There are several markets driving the need for it: * Application Portfolio Analysis (APA) aiming at improving the enterprise performance * Software Assessment for producing software KPI and improve quality and productivity * Software security and resiliency measures and validation * Software evolution or legacy modernization, for which blueprinting the software systems are needed nor tools improving and facilitating modifications


References

{{Reflist Software Data management Source code